import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

/**
 * 插件相关配置
 */
const plugins = [
    // vue3相关插件
    vue(),// vue({reactivityTransform: true})  开启$refs特性
    // 在vue3中使用jsx时需要配置此插件
    vueJsx()
]

/**
 * 项目预览选项
 */
const preview = {port: 9948, host: true, strictPort: true}

/**
 * 基础路径,默认"./"
 */
const base = '/'

/**
 * 设为 false 可以避免 Vite 清屏而错过在终端中打印某些关键信息
 */
const clearScreen = false

/**
 * 开发服务器配置
 */
const server = {
    // '0.0.0.0' 为监听所有地址,包括局域网和公网地址
    host: '0.0.0.0',
    // 开发时启动的端口
    port: 9949,
    // 代理跨域配置
    proxy: {
        '/development': {  //开发模式
            target: 'http://127.0.0.1:9876', //'http://192.168.1.13:8088',
            changeOrigin: true,
            secure: false,
            rewrite: (path: string) => path.replace(/^\/development/, '')
        },
        '/testing': { //测试模式
            target: 'http://127.0.0.1:8081',
            changeOrigin: true,
            rewrite: (path: string) => path.replace(/^\/testing/, '')
        }
    },
    // overlay 为 false禁用开发服务器错误的屏蔽
    hmr: {overlay: false},
    // 在服务器启动时自动在浏览器中打开应用程序
    open: false,
    // true,启用并允许任何源
    cors: true,
    // 是否启用https
    https: false,
}

/**
 * 打包(构建)相关
 */
const build = {
    chunkSizeWarningLimit: 1500,
    //打包文件拆分
    rollupOptions: {
        output: {
            manualChunks(id: any) {
                if (id.includes('node_modules')) {
                    return id.toString().split('node_modules/')[1].split('/')[0].toString()
                }
            }
        }
    }
}

/**
 * scss全局变量的配置
 */
const css = {
    preprocessorOptions: {
        scss: {
            javascriptEnabled: true,
            additionalData: '@use "./public/variable.scss";',
        },
    },
}

export default defineConfig({
    plugins,
    preview,
    base,
    clearScreen,
    server,
    build,
    css
})